home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-10-22 | 16.3 KB | 488 lines | [TEXT/MPS ] |
- {=========================================================================================}
- {
-
- 4th DIMENSION EXTERNAL COMMANDS INTERFACE FILE
-
- Written by ACI and ACIUS Engineering Teams.
-
- © 1987,1991 ACI, ACIUS Inc.
-
- }
- {=========================================================================================}
-
- Unit Ext4DIntf;
-
- {$IFC UNDEFINED THINK_PASCAL }
- {$D- }
- {$R- }
- {$ENDC }
-
- INTERFACE
-
- {$IFC UNDEFINED THINK_PASCAL }
- USES MemTypes,
- QuickDraw,
- OSIntf,
- ToolIntf,
- PackIntf;
- {$ENDC}
-
-
- {$IFC UNDEFINED THINK_PASCAL }
- {$SETC DebugOn = TRUE }
- {$IFC DebugOn }
- {$D+ }
- {$R+ }
- {$ELSEC }
- {$D- }
- {$R- }
- {$ENDC }
- {$ENDC }
-
- CONST
-
- {---------------------------------------------------------------------------------------}
- { Special ProcNums for an External Package }
- {---------------------------------------------------------------------------------------}
-
- Init4DPackage = -1; { Sent once when the database is opened
- and before the execution of the Startup procedure }
- InitPackage = -1; { Same }
-
- DeInit4DPackage = -2; { Sent once when the database is going to be closed }
- DeInitPackage = -2; { Same }
-
- {---------------------------------------------------------------------------------------}
-
-
- {---------------------------------------------------------------------------------------}
- { Types of Fields }
- {---------------------------------------------------------------------------------------}
-
- AlphaField = 0; { Alphanumeric field }
- NumericField = 1; { Real field }
- TextField = 2; { Text field }
- PictureField = 3; { Picture field }
- DateField = 4; { Date field }
- BooleanField = 6; { Boolean field }
- SubFileField = 7; { Subfield field }
- IntegerField = 8; { Integer field }
- LongIntField = 9; { LongInt field }
- TimeField = 11; { Time field }
-
- {---------------------------------------------------------------------------------------}
-
-
- {---------------------------------------------------------------------------------------}
- { Entry points }
- {---------------------------------------------------------------------------------------}
-
- EX_CREATE_RECORD = 1; { CREATE RECORD }
- EX_SAVE_RECORD = 2; { SAVE RECORD }
- EX_NEXT_RECORD = 3; { NEXT RECORD }
- EX_PREVIOUS_RECORD = 4; { PREVIOUS RECORD }
- EX_GO_TO_RECORD = 5; { GO TO RECORD }
- EX_Records_in_selection = 6; { Records in Selection }
- EX_DELETE_SELECTION = 7; { DELETE SELECTION }
- EX_FIRST_RECORD = 8; { FIRST RECORD }
- EX_Count_files = 9; { Number of files }
- EX_Count_fields = 10; { Number of fields }
- EX_Filename = 11; { Name of the file }
- EX_FIELD_ATTRIBUTES = 12; { FIELD ATTRIBUTES }
- EX_SORT_SELECTION = 13; { SORT }
- EX_SEARCH = 14; { SEARCH }
- EX_Before_selection = 15; { Before Selection }
- EX_End_selection = 16; { End of Selection }
- EX_GET_FIELD = 17; { Read contents of a field }
- EX_PUT_FIELD = 18; { Write to a field }
- EX_GET_VARIABLE = 19; { Read contents of a variable }
- EX_PUT_VARIABLE = 20; { Write to a variable }
- EX_INSTALL_TASK = 21; { Installing of a 4D task }
- EX_REMOVE_TASK = 22; { Remove a 4D task }
- EX_GetProcResID = 23; { Number of current resource }
- EX_Get_export_filter = 24; { Export ASCII filter (Mac -> Other) }
- EX_Get_import_filter = 25; { Import ASCII filter (Mac <- Other) }
- EX_Get_packed_record = 26; { Reading a packed record }
- EX_PUT_PACKED_RECORD = 27; { Writing a packed record }
- EX_CREATE_SET = 28; { CREATE SET }
- EX_USE_SET = 29; { USE SET }
- EX_EXECUTE_PROCEDURE = 30; { EXECUTE Procedure}
- EX_Execute_function = 31; { EXECUTE Function }
-
- { The entry points 32 thru 38 are reserved. }
-
- EX_EVENT_IS_TAKEN = 39; { The event is taken by the back-ground task }
- EX_Locked = 40; { Locked Record }
- EX_READ_WRITE = 41; { READ WRITE/READ ONLY }
- EX_LOAD_RECORD = 42; { LOAD RECORD for multi-user mode }
- EX_RELATE_ONE = 43; { Activate the many to one relations }
- EX_RELATE_MANY = 44; { Activate the one to many relations }
- EX_Is_multiuser = 45; { Mode test to access the database }
-
- { The entry point 46 is reserved and not yet implemented. }
-
- EX_String = 47; { Calls 4th DIMENSION String command }
- EX_POPUP_FIELD_LIST = 48; { Pop Up field list }
- EX_POPUP_FILE_LIST = 49; { Pop up file list }
- EX_GetFileFieldNum = 50; { Returns file and field number of specified string name }
- EX_Selected_record_number = 51; { Number of current record in the selection }
-
- { The entry points 52 thru 55 are reserved and not yet implemented. }
-
- EX_Get_infos = 56;
- EX_MESSAGES = 57;
-
- {---------------------------------------------------------------------------------------}
- { External areas }
- {---------------------------------------------------------------------------------------}
-
-
- { MouseDown = 1;}
- CallTheScript = 301; { Same }
- { KeyDown = 3;}
- GoToNextField = 110; { To return in Message }
- GoToPreviousField = 111; { Same }
- EventNotTaken = 112; { Same }
- { AutoKey = 5;}
- { UpdateEvt = 6;}
- IsNewData = 2; { in When if the current record has changed }
- InitEvt = 16;
- IsPrinting = -1; { in Message }
- IsInputLayout = 1; { in Modifiers }
- IsOutputLayout = 0; { in Modifiers }
- IsExternalWindow = -1; { in When }
- TestEvt = 20;
- AreaCanBeSelected = 101; { in Message }
- DeInitEvt = 17;
- CannotReject = 130; { In Message }
- CanReject = 0; { In Message }
- AreaRejects = 122; { In Message }
- CursorEvt = 18;
- SelectEvt = 21;
- DeSelectEvt = 22;
- ScrollEvt = 25;
- StructEvt = 26;
- AreaCustomized = 102; { In Message }
- IdleEvt = 0;
- TestPrintSizeEvt = 27;
- AreaVarFrame = 103; { In Message }
- PrintSizeEvt = 28;
- PrintBandEvt = 29;
- UndoEvt = 30;
- CutEvt = 31;
- CopyEvt = 32;
- PasteEvt = 33;
- ClearEvt = 34;
- SelectAllEvt = 35;
- InstallMenusEvt = 40;
- DeInstallMenusEvt = 41;
- MenuSelectedEvt = 42;
- ActivateMenusEvt = 43;
- GrowBoxEvt = 50;
- AreaMinSize = 121; { In Modifiers - Width,Height in Message }
-
- TYPE
-
- {---------------------------------------------------------------------------------------}
- { Bundle '4BND', '4BNX', '4BNR', '4BNH' }
- {---------------------------------------------------------------------------------------}
-
- ResEntry = Record
- Typ : ResType;
- LocalNum,
- GlobalNum : Integer;
- End;
-
- ResTabHandle = ^ResTabPtr;
- ResTabPtr = ^ResTab;
- ResTab = Record
- NbEntry : Integer;
- Tab : Array [1..1] Of ResEntry;
- End;
-
- {---------------------------------------------------------------------------------------}
-
-
- {---------------------------------------------------------------------------------------}
- { 4th DIMENSION Variables and expressions }
- {---------------------------------------------------------------------------------------}
-
- Str40 = string[40];
- Str80 = string[80];
-
- Typkind = ( Unused1,
- Numeric, { Numeric }
- Alpha, { AlphaNumeric }
- Unused2,
- Date, { Date }
- Nothing, { Undefined }
- Bool, { Boolean }
- Unused3,
- Unused4,
- Long4D, { LongInt }
- Pict, { Picture }
- Time4D, { Time }
- Unused5,
- Table, { 2 Dimensional Array}
- TabNum, { Array of Reals }
- TabInt, { Array of Integers }
- TabLong, { Array of LongInts }
- TabDate, { Array of Dates }
- TabAlpha, { Array of Text }
- TabPict, { Array of Pictures }
- Unused6,
- TabStrFix, { Array of Fixed Strings }
- TabBool, { Array of Booleans }
- Unused7,
- StrFix { Fixed String : max. 255 characters }
- );
-
- Date4D = Record { 4th DIMENSION Date expressions }
- Day : Integer;
- Month : Integer;
- Year : Integer;
- End;
-
- TE4D = Record { 4th DIMENSION Text expressions }
- Len : Integer; { Length if >=0 }
- CC : CharsHandle; { Characters, may be equal to Nil }
- End;
-
- PicEnd = Record { Added to the end of the Picture definition }
- Origin : Point;
- Transfer : Integer;
- End; { Warning : may not be word aligned }
-
-
- TabOfIntHandle = ^TabOfIntPtr;
- TabOfIntPtr = ^TabOfInt;
- TabOfLongHandle = ^TabOfLongPtr;
- TabOfLongPtr = ^TabOfLong;
- TabOfNumHandle = ^TabOfNumPtr;
- TabOfNumPtr = ^TabOfNum;
- TabOfAlphaHandle = ^TabOfAlphaPtr;
- TabOfAlphaPtr = ^TabOfAlpha;
- TabOfPictHandle = ^TabOfPictPtr;
- TabOfPictPtr = ^TabOfPict;
- TabOfDateHandle = ^TabOfDatePtr;
- TabOfDatePtr = ^TabOfDate;
- TabOfBoolHandle = ^TabOfBoolPtr;
- TabOfBoolPtr = ^TabOfBool;
- TabOfTabHandle = ^TabOfTabPtr;
- TabOfTabPtr = ^TabOfTab;
- TabStrFixHandle = ^TabStrFixPtr;
- TabStrFixPtr = ^TabStrFixRec;
-
- SmallVarRec = Record
- VarKind: Typkind;
- Filler1: Boolean;
- Case Typkind of
- TabInt : (NbElem: LongInt;TabIntH: TabOfIntHandle;CurSel:Integer);
- TabLong : (NbElem2: LongInt;TabLongH:TabOfLongHandle);
- TabNum : (NbElem3: LongInt;TabNumH:TabOfNumHandle);
- TabAlpha : (NbElem4: LongInt;TabAlphaH:TabOfAlphaHandle);
- TabPict : (NbElem5: LongInt;TabPictH:TabOfPictHandle);
- TabDate : (NbElem6: LongInt;TabDateH:TabOfDateHandle);
- TabBool : (NbElem7: LongInt;TabBoolH:TabOfBoolHandle);
- TabStrFix : (NbElem9: LongInt;TabFixH:TabStrFixHandle);
- End;
-
-
- TabOfInt = ARRAY [0..100000] of INTEGER; { Array of integers }
- TabOfLong = ARRAY [0..100000] of LongInt; { Array of LongInts }
- TabOfNum = ARRAY [0..100000] of Extended; { Array of Reals (extended) }
- TabOfAlpha = ARRAY [0..100000] of TE4D; { Array of Text's }
- TabOfPict = ARRAY [0..100000] of PicHandle; { Array of Pictures }
- TabOfDate = ARRAY [0..100000] of Date4D; { Array of Dates }
- TabOfBool = PACKED ARRAY [0..100000] of Boolean; { Array of Booleans }
- TabOfTab = ARRAY [0..100000] of SmallVarRec; { Array of 2 Dimensions }
- TabStrFixRec = RECORD
- LenFix: INTEGER;
- { + additionnal data }
- END; { Array of Fixed length strings }
-
- VarRecPtr = ^VarRec;
- VarRec = Record
- VarKind : Typkind;
- Filler1 : Boolean;
- Case Typkind of
- Numeric : (RValue:Extended);
- Date : (DValue:Date4D);
- Bool : (BValue:Boolean);
- Alpha : (Len:Integer;CC:CharsHandle);
- Pict : (PicSize:LongInt;PP:PicHandle);
- Long4D,
- Time4D : (LValue:LongInt);
- StrFix : (SLen : Integer;SValue:Str255);
- TabInt : (NbElem: LongInt;TabIntH: TabOfIntHandle;CurSel:Integer);
- TabLong : (NbElem2: LongInt;TabLongH:TabOfLongHandle);
- TabNum : (NbElem3: LongInt;TabNumH:TabOfNumHandle);
- TabAlpha : (NbElem4: LongInt;TabAlphaH:TabOfAlphaHandle);
- TabPict : (NbElem5: LongInt;TabPictH:TabOfPictHandle);
- TabDate : (NbElem6: LongInt;TabDateH:TabOfDateHandle);
- TabBool : (NbElem7: LongInt;TabBoolH:TabOfBoolHandle);
- Table : (NbElem8: LongInt;TabTabH:TabOfTabHandle);
- TabStrFix : (NbElem9: LongInt;TabFixH:TabStrFixHandle);
- End;
-
- {---------------------------------------------------------------------------------------}
-
-
- {---------------------------------------------------------------------------------------}
- { Entry Points parameter block }
- {---------------------------------------------------------------------------------------}
-
- LineRec = Record
- LogicOper : (NoOper,ANDLogic,ORLogic,Except);
- Field : Integer;
- File4D : Integer;
- Operation : (NoOp,
- IsEqual,
- IsDifferent,
- IsGreater,
- IsGreaterOrEqual,
- IsLess,
- IsLessOrEqual,
- Contains,
- NoContains);
- Case Byte of
- 0: (SRecVal: Str40);
- 1: (RRecVal: Extended);
- 2: (DRecVal: Date4D);
- 3: (LRecVal: LongInt);
- 4: (IRecVal: INTEGER);
- 5: (BRecVal: Boolean);
- End;
-
-
- ParmBlock = Record
- FileNumber : Integer;
- FieldNumber : Integer;
- RecordNumber : LongInt;
- ManyToOne,
- OneToMany : Boolean;
- Name : Str255;
- HH : Handle;
- Error : Integer;
- Result1 : LongInt;
- Result2 : LongInt;
- Result3 : LongInt;
- Result4 : LongInt;
- RR : Extended;
- DD : Date4D;
- LL : LongInt;
- II : Integer;
- SS : Str80;
- TT : Te4D;
- ClearOldVariable : Boolean;
- NumberOfLines : Integer;
- Lines : Array [1..20] of LineRec; { See note below }
- End;
-
- { Note
- The size of the "Lines" array can be changed.
- If, for example, you call 4th DIMENSION to sort a selection on only 2 levels
- you can declare the variable with only 2 "LineRec".
- Doing this, you economize the amount of memory taken by the record.
- Accordingly, you can declare 30 "LineRec" if you need to sort
- a selection on 30 levels. }
-
- {---------------------------------------------------------------------------------------}
-
-
- {---------------------------------------------------------------------------------------}
- { Parameters passed to an External Package }
- {---------------------------------------------------------------------------------------}
-
-
- EventRecordPtr = ^EventRecord;
- ExtendedPtr = ^Extended;
- Date4DPtr = ^Date4D;
- TE4DPtr = ^TE4D;
- PicHandPtr = ^PicHandle;
- HandPtr = ^Handle;
-
-
-
- PackParam = Record
- Case Integer of
- 1 : (I : LongIntPtr);
- 2 : (L : LongIntPtr);
- 3 : (R : ExtendedPtr);
- 4 : (EV : EventRecordPtr);
- 5 : (RE : RectPtr);
- 6 : (D : Date4DPtr);
- 7 : (T : TE4DPtr);
- 8 : (S : StringPtr);
- 9 : (P : PicHandPtr);
- 10 : (HH : HandPtr);
- 11 : (X : VarRecPtr);
- End;
-
- PackageVariables = Array[1..1] Of PackParam;
- PackageVariablesPtr = ^PackageVariables;
-
- { If you want to coerce the pointers by yourself, use the following types }
-
- ParamsTabPtr = ^ParamsTab;
- ParamsTab = Array [1..1] Of Ptr;
-
- {---------------------------------------------------------------------------------------}
-
-
- Procedure Call4D(Selector:Integer;Var Param:ParmBlock); Inline $206D,$FFF4,$4E90;
- Function GetProg4DVers:Integer; InLine $3EAD, $FFF8;
- Function IsVersion2:Boolean;
- Function CurProcResID:Integer;
- Function GetResNum(BundleType,ResourceType:ResType;LocalID:Integer):Integer;
-
- {-----------------------------------------------------------------------------------------}
- IMPLEMENTATION
- {-----------------------------------------------------------------------------------------}
-
- Function IsVersion2{:Boolean};
- Begin
- IsVersion2:=(GetProg4DVers=$4444);
- End; { IsVersion2 }
-
- Function CurProcResID{:Integer};
- Var Blk4D: ParmBlock;
- Begin
- Call4D(EX_GetProcResID,Blk4D);
- CurProcResID:=Ord(Blk4D.Result1);
- End; { CurProcResID }
-
- {$IFC UNDEFINED THINK_PASCAL }
- {$R- }
- {$ENDC }
-
- Function GetResNum{(BundleType,ResourceType:ResType;LocalID:Integer):Integer};
- Var Count:Integer;
- WorkBundle:ResTabHandle;
- Begin
- GetResNum:=0;
- WorkBundle:=ResTabHandle(GetResource(BundleType,CurProcResID));
- If WorkBundle<>Nil Then
- Begin
- For Count:=1 To WorkBundle^^.NbEntry Do
- Begin
- With WorkBundle^^.Tab[count] Do
- Begin
- If (ResourceType=Typ) & (LocalID=LocalNum) Then
- Begin
- GetResNum := GlobalNum;
- Count:=32001;
- End;
- End;
- End;
- End;
- End; { GetResNum }
-
- {$IFC UNDEFINED THINK_PASCAL }
- {$IFC DebugOn }
- {$R+ }
- {$ENDC }
- {$ENDC }
-
- End. { End of Unit Ext4DIntf }
-